<?php 
	class Page{
		private $total;//数据表中总记录数
		private $listRous;//每页显示行数
		private $limit;
		private $uri;
		private $pageNum;//页数
		private $config=array('header'=>"记录","prev"=>"上一页","next"=>"下一页","first"=>"首页","last"=>"尾页");
		private $listNum=8;
		
		public function __construct($total,$listRous=10){
			$this->total = $total;
			$this->listRous = $listRous;
			$this->uri=$this->getUri();
			$this->page=!empty($_GET["page"])? $_GET["page"]:1;
			$this->pageNum=ceil($this->total/$this->listRous);
			$this->limit=$this->setLimit();
			var_dump($this);
		}
		private function setLimit(){
			return "limit ".($this->page-1)*$this->listRous.",{$this->listRous}";
		}
		private function getUri(){
			
			$url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"],'?')?'':"?");//获取URI
		
			$parse=parse_url($url);
		
			if(isset($parse['query'])){
				parse_str($parse["query"],$params);
				unset($params["page"]);

				$url=$parse['page'].'?'.http_build_query($params);
				
			}
			return $url;
		}
		private function __get($args){
			if($args=="limit"){
				return $this->limit;
			}else{
				return null;
			}
		}
		
		private function start(){
			if($this->total==0){
				return 0;
			}else{
				return ($this->page-1)*$this->listRous+1;
			}
		}
		
		private function end(){
			return min($this->page*$this->listRous,$this->total);
		}
		
		private function first(){
			$html.="<div class=\"Pagination\">";
			if($this->page==1){
				$html.="";
			}else{
				$html.="&nbsp;&nbsp;<a class='tips' href='{$this->uri}&page=1'>{$this->config["first"]}</a>&nbsp;&nbsp;";
			}
			return $html;
			
		}
		
		private function prev(){
			
			if($this->page==1){
				$html.="";
			}else{
				$html.="&nbsp;&nbsp;<a class='tips' href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a>&nbsp;&nbsp;";
			}
			return $html;
		}
		private function pageList(){
			$linkPage="";
			
			$inum=floor($this->listNum/2);
			for($i=$inum;$i>=1;$i--){
				$page=$this->page-$i;
				if($page<1){
					continue;
				}
				$linkPage.="&nbsp;&nbsp;<a class='tips' href='{$this->uri}&page={$page}'>{$page}</a>&nbsp;&nbsp;";
			}
			$linkPage.="&nbsp;{$this->page}&nbsp;";
			for ($i=1;$i<=$inum;$i++){
				$page=$this->page+$i;
				if($page<=$this->pageNum){
					$linkPage.="&nbsp;&nbsp;<a class='tips' href='{$this->uri}&page={$page}'>{$page}</a>&nbsp;&nbsp;";
				}else{
					break;
				}
			}
			return $linkPage;
		}
		private function next(){
			if($this->page==$this->pageNum){
				$html.="";
			}else{
				$html.="&nbsp;&nbsp;<a class='tips' href='{$this->uri}&page=".($this->page+1)."'>{$this->config["next"]}</a>";
			}
			return $html;
		}
		private function last(){
			
			if($this->page==$this->pageNum){
				$html.="";
			}else{
				$html.="&nbsp;&nbsp;<a class='tips' href='{$this->uri}&page=".($this->pageNum)."'>{$this->config["last"]}</a>";
			}
			return $html;
		}
		private function goPage(){
			return '&nbsp;&nbsp;<input type="text" value="'.$this->page.'" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" style="width:30px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'">&nbsp;&nbsp;';
		}
		public function fpage($display=array(0,1,2,3,4,5)){
			$html[0]="&nbsp;&nbsp;共有{$this->total}{$this->config["header"]}&nbsp;&nbsp;";
			$html[1]="&nbsp;&nbsp;每页显示<b>".($this->end()-$this->start()+1)."</b>条&nbsp;&nbsp;本页{$this->start()}-{$this->end()}&nbsp;&nbsp;";
			$html[2]="&nbsp;&nbsp;<b>{$this->page}/{$this->pageNum}</b>页&nbsp;&nbsp;";
			$html[3]=$this->first();
			$html[4]=$this->prev();
			$html[5]=$this->pageList();
			$html[6]=$this->next();
			$html[7]=$this->last();
			$html[8]=$this->goPage();
			$fpage="";
			foreach ($display as $index){
				$fpage.=$html[$index];
			}
			return $fpage;
		}
	}
?>